2023/12/232000字符
Function
函数最大的特点:高内聚,弱耦合
声明方式:
function test1 () {} // test1.name = test1
// 命名式函数表达式
var test2 = function abc () {} // test2.name = abc
// 匿名式函数表达式 ---> 函数表达式
var test3 = function () {} // test3.name = test3
function test (a, b) { // 函数声明 (形参,不限制位数)
// var a, b; 相当于在函数内部声明
// 执行体...
console.log(arguments); //--> [1, 2, 3] 实参
console.log(test.length); //--> 2 形参长度
return a + b; // 返回值,不写 return js 会隐式的加一个
}
test(1, 2, 3); // 函数调用 (实参)
两种方式没有任何区别,包括调用方式
立即执行函数
(function () {
var a = 123;
var b = 234;
console.log(a + b);
}()) //--> 357
var num = (function (a, b, c) {
var d = a + b + c * 2 - 2;
return d;
}(1, 2, 3))
console.log(num); //--> 7
两种写法:
(function () {}()); // W3C 官方标准
(function () {})();
function test(){
var a = 123;
} // 直接加 (); 会报错,只有表达式才能被执行符号执行
test();
var test = function () {
console.log("a");
}(); //--> a 函数被立即执行 被执行符号执行的表达式会变成立即执行函数
test(); //--> test is not a function 立即执行函数会把函数名称销毁
+ function test () { // 通过运算符来实现一个立即执行函数
console.log("a");
}(); //--> a
test(); //--> tset is not function
变量的生命周期
- 局部变量:函数执行完销毁;
- 全局变量:页面关闭后销毁。
执行上下文(当前代码执行环境 EC)
- 环境:全局、函数、eval;
- 当代码遇到以上三种环境时,都会产生一个执行栈。